/*
 * CcCalcute.h
 *
 *  Created on: 2012/05/03
 *      Author: guanxiaoying
 */

#ifndef CCCALCUTE_H_
#define CCCALCUTE_H_

#define    CAL_DIVIDE_ZERO  		0x01
#define    CAL_SHIFT_NEGATIVE  		0x02
#define    CAL_OVERFLOW  			0x04
#define    CAL_SIGN_OVERFLOW  		0x08
#define    CAL_SHIFT_OVERFLOW  		0x10
#define    CAL_CAST_INT_CHANGEFLG  	0x20
#define    CAL_CAST_INT_LOSTDATA  	0x40
#define    CAL_CAST_FLOAT2INT  		0x80


AST CcCalMinus( AST );
AST CcCalNegation( AST );
AST CcCalBitNegation( AST );
AST CcCalMultiplicative( AST, AST , AST );
AST CcCalDivision( AST, AST , AST );
AST CcCalRemainder( AST, AST , AST );
AST CcCalLeftShift( AST, AST  );
AST CcCalRightShift( AST, AST );
AST CcCalBitAnd( AST, AST , AST );
AST CcCalBitExOr( AST, AST , AST );
AST CcCalBitInOr( AST, AST , AST );
AST CcCalAdditive( AST, AST , AST );
AST CcCalSubtraction( AST, AST , AST );
AST CcCalCastTo( AST astValue, AST astType );
S4  CcCalCatchFlagValue( VOID );
#endif /* CCCALCUTE_H_ */
